home *** CD-ROM | disk | FTP | other *** search
/ Merciful 2 / Merciful - Disc 2.iso / software / m / muiv3.1cracked.lha / MUI / Developer / Modula / txt / MuiClasses.def next >
Text File  |  1995-11-18  |  45KB  |  1,047 lines

  1. DEFINITION MODULE MuiClasses;
  2.  
  3. (***************************************************************************
  4. **
  5. ** $VER: MuiClasses.def 3.1 (18.11.95)
  6. **
  7. ** The following updates have been done by
  8. **
  9. **   Olaf "Olf" Peters <olf@informatik.uni-bremen.de>
  10. **
  11. ** $HISTORY:
  12. **
  13. ** 18.11.95  3.1   : updated for MUI v3.1 release
  14. **
  15. ***************************************************************************)
  16.  
  17. (*************************************************************************
  18. ** Structures and Macros for creating MUI custom classes.
  19. **
  20. ** converted for M2 by Christian 'Kochtopf' Scholz
  21. **
  22. **************************************************************************
  23. **
  24. ** $Id: MuiClasses.def 1.5 1995/11/18 16:46:18 olf Exp olf $
  25. **
  26. ** $Log: MuiClasses.def $
  27. # Revision 1.5  1995/11/18  16:46:18  olf
  28. # MUI Release 3.1
  29. #
  30. # Revision 1.4  1995/11/02  20:02:47  olf
  31. # updated to muimaster 11.3283
  32. #
  33. # Revision 1.3  1995/10/23  17:59:16  olf
  34. # *** empty log message ***
  35. #
  36. # Revision 1.2  1995/10/23  17:06:34  olf
  37. # *** empty log message ***
  38. #
  39. # Revision 1.1  1995/09/25  15:32:52  olf
  40. # Initial revision
  41. #
  42. # Revision 1.8  1994/08/16  20:24:55  Kochtopf
  43. # mCustumClassPtr hinzugefügt
  44. # mCustomClass nach M2-Standard umbenannt
  45. #
  46. # Revision 1.7  1994/08/16  19:41:22  Kochtopf
  47. # added MUIKEYPOPUP
  48. #
  49. # Revision 1.6  1994/06/30  21:03:01  Kochtopf
  50. # changed again SHORTINT to SHORTCARD for madAddLeft, etc.
  51. #
  52. # Revision 1.5  1994/06/30  20:56:40  Kochtopf
  53. # Typ bei madAddLeft, etc. von BYTE in SHORTINT geändert, um
  54. # besser damit rechnen zu können.
  55. #
  56. # Revision 1.4  1994/06/27  22:04:58  Kochtopf
  57. # changed name from MUIClasses to MuiClasses
  58. # added definition of mCustomClass
  59. #
  60. # Revision 1.3  1994/06/23  21:36:53  Kochtopf
  61. # upgraded to MUI 2.1
  62. # added mCustumClass-Definition
  63. #
  64. # Revision 1.2  1994/02/19  12:42:19  Kochtopf
  65. # Neue Prozeduren hinzugefuegt, die in mui.h definiert waren.
  66. # Ausserdem etwas die Reihenfolge geaendert, so dass man jetzt alles
  67. # benutzen koennen sollte.
  68. #
  69. # Revision 1.1  1994/02/02  09:37:18  Kochtopf
  70. # Initial revision
  71. #
  72. **
  73. **************************************************************************)
  74.  
  75. FROM    SYSTEM      IMPORT ADDRESS, WORD, BYTE, LONGSET;
  76. FROM    IntuitionD  IMPORT ObjectPtr, WindowPtr, ScreenPtr, DrawInfoPtr, IBox,
  77.                            IntuiMessagePtr, IClassPtr;
  78. FROM    ExecD       IMPORT LibraryPtr, MinListPtr;
  79. FROM    GraphicsD   IMPORT TextFontPtr, RastPortPtr;
  80. FROM    MuiSupport  IMPORT APTR;
  81. FROM    MuiD        IMPORT mInputHandlerNodePtr, mListTestPosResultPtr ;
  82. FROM    UtilityD    IMPORT HookPtr;
  83. FROM    IFFParseD   IMPORT IFFHandlePtr;
  84.  
  85. IMPORT    R ;
  86.  
  87. TYPE
  88.   StrPtr = POINTER TO ARRAY [0..MAX(LONGINT)-1] OF CHAR ;
  89.  
  90. (*
  91. ** at the beginning some general things used for BOOPSI-Objects
  92. *)
  93.  
  94. (* get a pointer to our instance data *)
  95.  
  96. PROCEDURE InstData(cl : IClassPtr; obj : ObjectPtr) : ADDRESS;
  97.  
  98. (* get the size ... *)
  99.  
  100. PROCEDURE InstSize(cl : IClassPtr) : CARDINAL;
  101.  
  102.  
  103. (*
  104. ** now the things concerning MUI's view of the things
  105. **
  106. ** GENERAL NOTES:
  107. **
  108. ** - Everything described in this defintion file is only valid within
  109. **   MUI classes. You may never use any of these things out of
  110. **   a class, e.g. in a traditional MUI application.
  111. **
  112. ** - Except when otherwise stated, all structures are strictly read only.
  113. *)
  114.  
  115. (* Pointer-Types *)
  116.  
  117. TYPE mGlobalInfoPtr     = POINTER TO mGlobalInfo;
  118.      mMinMaxPtr         = POINTER TO mMinMax;
  119.      mNotifyDataPtr     = POINTER TO mNotifyData;
  120.      mAreaDataPtr       = POINTER TO mAreaData;
  121.      mRenderInfoPtr     = POINTER TO mRenderInfo;
  122.      mConfigurationPtr  = ADDRESS;
  123.      WORDPtr            = POINTER TO WORD;
  124.      mCustomClassPtr    = POINTER TO mCustomClass;
  125.  
  126.  
  127. (* 
  128. ** Definitions for madFlags 
  129. ** (you will get these flags e.g. with a Draw-Method.)
  130. *)
  131.  
  132. TYPE  MADFlags = (drawObject, (* completely redraw yourself *)
  133.                   drawUpdate, (* only update! *)
  134.                   p2, p3, p4, p5, p6, p7, p8, p9, p10, p11,
  135.                   p12, p13, p14, p15, p16, p17, p18, p19, p20, p21,
  136.                   p22, p23, p24, p25, p26, p27, p28, p29, p30, p31
  137.                   (* rest is private, but must be specified to get a LONGSET *)
  138.                  );
  139.  
  140.       MADFlagSet = SET OF MADFlags;
  141.  
  142.  
  143. (* 
  144. ** Type definitions of some important Methods
  145. ** You will need them in your own classes.
  146. *)
  147.  
  148. (*/// "Notify"
  149. *)
  150.  
  151.         mpCallHookPtr          = POINTER TO mpCallHook;
  152.         mpCallHook             = RECORD
  153.                                  methodID  : LONGINT;
  154.                                  hook      : HookPtr;
  155.                                  param1    : LONGINT;
  156.                                  (* ... *)
  157.                                END;
  158.         mpFindUDataPtr         = POINTER TO mpFindUData;
  159.         mpFindUData            = RECORD
  160.                                  methodID      : LONGINT;
  161.                                  data      : LONGINT;
  162.                                END;
  163.         mpGetUDataPtr          = POINTER TO mpGetUData;
  164.         mpGetUData             = RECORD
  165.                                  methodID  : LONGINT;
  166.                                  udata     : LONGINT;
  167.                                  attr      : LONGINT;
  168.                                  storage   : APTR;
  169.                                END;
  170.         mpKillNotifyPtr        = POINTER TO mpKillNotify;
  171.         mpKillNotify           = RECORD
  172.                                  methodID  : LONGINT;
  173.                                  trigAttr  : LONGINT;
  174.                                END;
  175.         mpMultiSetPtr          = POINTER TO mpMultiSet;
  176.         mpMultiSet             = RECORD
  177.                                  methodID  : LONGINT;
  178.                                  attr      : LONGINT;
  179.                                  val       : LONGINT;
  180.                                  obj       : APTR;
  181.                                  (* ... *)
  182.                                END;
  183.         mpNoNotifySetPtr       = POINTER TO mpNoNotifySet;
  184.         mpNoNotifySet          = RECORD
  185.                                  methodID  : LONGINT;
  186.                                  attr      : LONGINT;
  187.                                  format    : StrPtr;
  188.                                  val       : LONGINT;
  189.                                  (* ... *)
  190.                                END;
  191.         mpNotifyPtr            = POINTER TO mpNotify;
  192.         mpNotify               = RECORD
  193.                                  methodID  : LONGINT;
  194.                                  trigAttr  : LONGINT;
  195.                                  trigVal   : LONGINT;
  196.                                  destObj   : APTR;
  197.                                  followParams:LONGINT;
  198.                                  (* ... *)
  199.                                END;
  200.         mpSetPtr               = POINTER TO mpSet;
  201.         mpSet                  = RECORD
  202.                                  methodID  : LONGINT;
  203.                                  attr      : LONGINT;
  204.                                  val       : LONGINT;
  205.                                END;
  206.         mpSetAsStringPtr       = POINTER TO mpSetAsString;
  207.         mpSetAsString          = RECORD
  208.                                  methodID  : LONGINT;
  209.                                  attr      : LONGINT;
  210.                                  format    : StrPtr;
  211.                                  val       : LONGINT;
  212.                                  (* ... *)
  213.                                END;
  214.         mpSetUDataPtr          = POINTER TO mpSetUData;
  215.         mpSetUData             = RECORD
  216.                                  methodID  : LONGINT;
  217.                                  udata     : LONGINT;
  218.                                  attr      : LONGINT;
  219.                                  val       : LONGINT;
  220.                                END;
  221.         mpSetUDataOncePtr      = POINTER TO mpSetUDataOnce ;
  222.         mpSetUDataOnce         = RECORD
  223.                                  methodID  : LONGINT ;
  224.                                  udata     : LONGINT ;
  225.                                  attr      : LONGINT ;
  226.                                  val       : LONGINT ;
  227.                                END ;
  228.         mpWriteLongPtr         = POINTER TO mpWriteLong;
  229.         mpWriteLong            = RECORD
  230.                                  methodID  : LONGINT;
  231.                                  val       : LONGINT;
  232.                                  memory    : APTR;
  233.                                END;
  234.         mpWriteStringPtr       = POINTER TO mpWriteString;
  235.         mpWriteString          = RECORD
  236.                                  methodID  : LONGINT;
  237.                                  str       : StrPtr;
  238.                                  memory    : APTR;
  239.                                END;
  240.  
  241. (*\\\*)
  242. (*/// "Family"
  243. *)
  244.  
  245.         mpFamilyAddHeadPtr     = POINTER TO mpFamilyAddHead;
  246.         mpFamilyAddHead        = RECORD
  247.                                  methodID  : LONGINT;
  248.                                  obj       : ObjectPtr;
  249.                                END;
  250.         mpFamilyAddTailPtr     = POINTER TO mpFamilyAddTail;
  251.         mpFamilyAddTail        = RECORD
  252.                                  methodID  : LONGINT;
  253.                                  obj       : ObjectPtr;
  254.                                END;
  255.         mpFamilyInsertPtr      = POINTER TO mpFamilyInsert;
  256.         mpFamilyInsert         = RECORD
  257.                                  methodID  : LONGINT;
  258.                                  obj       : ObjectPtr;
  259.                                  pred      : ObjectPtr;
  260.                                END;
  261.         mpFamilyRemovePtr      = POINTER TO mpFamilyRemove;
  262.         mpFamilyRemove         = RECORD
  263.                                  methodID  : LONGINT;
  264.                                  obj       : ObjectPtr;
  265.                                END;
  266.         mpFamilySortPtr        = POINTER TO mpFamilySort;
  267.         mpFamilySort           = RECORD
  268.                                  methodID  : LONGINT;
  269.                               (* obj       : ARRAY OF ObjectPtr ; *)
  270.                                END;
  271.         mpFamilyTransferPtr    = POINTER TO mpFamilyTransfer;
  272.         mpFamilyTransfer       = RECORD
  273.                                  methodID  : LONGINT;
  274.                                  family    : ObjectPtr;
  275.                                END;
  276.  
  277. (*\\\*)
  278. (*/// "Application"
  279. *)
  280.  
  281.         mpApplicationAddInputHandlerPtr    = POINTER TO mpApplicationAddInputHandler;
  282.         mpApplicationAddInputHandler       = RECORD
  283.                                              methodID  : LONGINT;
  284.                                              ihnode    : mInputHandlerNodePtr;
  285.                                            END;
  286.         mpApplicationCheckRefreshPtr       = POINTER TO mpApplicationCheckRefresh;
  287.         mpApplicationCheckRefresh          = RECORD
  288.                                             methodID   : LONGINT;
  289.                                            END;
  290.         mpApplicationGetMenuCheckPtr       = POINTER TO mpApplicationGetMenuCheck;
  291.         mpApplicationGetMenuCheck          = RECORD
  292.                                              methodID  : LONGINT;
  293.                                              menuId    : LONGINT;
  294.                                            END;
  295.         mpApplicationGetMenuStatePtr       = POINTER TO mpApplicationGetMenuState;
  296.         mpApplicationGetMenuState          = RECORD
  297.                                              methodID  : LONGINT;
  298.                                              menuId    : LONGINT;
  299.                                            END;
  300.         mpApplicationInputPtr  = POINTER TO mpApplicationInput;
  301.         mpApplicationInput                 = RECORD
  302.                                              methodID  : LONGINT;
  303.                                              signal    : POINTER TO LONGSET ;
  304.                                            END;
  305.         mpApplicationInputBufferedPtr      = POINTER TO mpApplicationInputBuffered;
  306.         mpApplicationInputBuffered         = RECORD
  307.                                              methodID  : LONGINT;
  308.                                            END;
  309.         mpApplicationLoadPtr   = POINTER TO mpApplicationLoad;
  310.         mpApplicationLoad                  = RECORD
  311.                                              methodID  : LONGINT;
  312.                                              name      : StrPtr;
  313.                                            END;
  314.         mpApplicationOpenConfigWindowPtr   = POINTER TO mpApplicationOpenConfigWindow;
  315.         mpApplicationOpenConfigWindow      = RECORD
  316.                                              methodID  : LONGINT;
  317.                                              flags     : LONGINT;
  318.                                            END;
  319.         mpApplicationNewInputPtr           = POINTER TO mpApplicationNewInput;
  320.         mpApplicationNewInput              = RECORD
  321.                                              methodID  : LONGINT ;
  322.                                              signal    : POINTER TO LONGSET ;
  323.                                            END;
  324.         mpApplicationPushMethodPtr         = POINTER TO mpApplicationPushMethod;
  325.         mpApplicationPushMethod            = RECORD
  326.                                              methodID  : LONGINT;
  327.                                              dest      : ObjectPtr;
  328.                                              count     : LONGINT;
  329.                                              (* ... *)
  330.                                            END;
  331.         mpApplicationRemInputHandlerPtr    = POINTER TO mpApplicationRemInputHandler;
  332.         mpApplicationRemInputHandler       = RECORD
  333.                                              methodID  : LONGINT;
  334.                                              ihnode    : mInputHandlerNodePtr;
  335.                                            END;
  336.         mpApplicationReturnIDPtr           = POINTER TO mpApplicationReturnID;
  337.         mpApplicationReturnID              = RECORD
  338.                                              methodID  : LONGINT;
  339.                                              retid     : LONGINT;
  340.                                            END;
  341.         mpApplicationSavePtr               = POINTER TO mpApplicationSave;
  342.         mpApplicationSave                  = RECORD
  343.                                              methodID  : LONGINT;
  344.                                              name      : StrPtr;
  345.                                            END;
  346.         mpApplicationSetConfigItemPtr      = POINTER TO mpApplicationSetConfigItem;
  347.         mpApplicationSetConfigItem         = RECORD
  348.                                              methodID  : LONGINT;
  349.                                              item      : LONGINT;
  350.                                              data      : APTR;
  351.                                            END;
  352.         mpApplicationSetMenuCheckPtr       = POINTER TO mpApplicationSetMenuCheck;
  353.         mpApplicationSetMenuCheck          = RECORD
  354.                                              methodID  : LONGINT;
  355.                                              menuId    : LONGINT;
  356.                                              stat      : LONGINT;
  357.                                            END;
  358.         mpApplicationSetMenuStatePtr       = POINTER TO mpApplicationSetMenuState;
  359.         mpApplicationSetMenuState          = RECORD
  360.                                              methodID  : LONGINT;
  361.                                              menuId    : LONGINT;
  362.                                              stat      : LONGINT;
  363.                                            END;
  364.         mpApplicationShowHelpPtr           = POINTER TO mpApplicationShowHelp;
  365.         mpApplicationShowHelp              = RECORD
  366.                                              methodID  : LONGINT;
  367.                                              window    : ObjectPtr;
  368.                                              name      : StrPtr;
  369.                                              node      : StrPtr;
  370.                                              line      : LONGINT;
  371.                                            END;
  372.  
  373. (*\\\*)
  374. (*/// "Window"
  375. *)
  376.  
  377.         mpWindowGetMenuCheckPtr            = POINTER TO mpWindowGetMenuCheck;
  378.         mpWindowGetMenuCheck   = RECORD
  379.                                  methodID  : LONGINT;
  380.                                  menuId    : LONGINT;
  381.                                END;
  382.         mpWindowGetMenuStatePtr            = POINTER TO mpWindowGetMenuState;
  383.         mpWindowGetMenuState   = RECORD
  384.                                  methodID  : LONGINT;
  385.                                  menuId    : LONGINT;
  386.                                END;
  387.         mpWindowScreenToBackPtr            = POINTER TO mpWindowScreenToBack;
  388.         mpWindowScreenToBack   = RECORD
  389.                                  methodID  : LONGINT;
  390.                                END;
  391.         mpWindowScreenToFrontPtr           = POINTER TO mpWindowScreenToFront;
  392.         mpWindowScreenToFront  = RECORD
  393.                                  methodID  : LONGINT;
  394.                                END;
  395.         mpWindowSetCycleChainPtr           = POINTER TO mpWindowSetCycleChain;
  396.         mpWindowSetCycleChain  = RECORD
  397.                                  methodID  : LONGINT;
  398.                               (* obj       : ARRAY OF ObjectPtr; *)
  399.                                END;
  400.         mpWindowSetMenuCheckPtr            = POINTER TO mpWindowSetMenuCheck;
  401.         mpWindowSetMenuCheck   = RECORD
  402.                                  methodID  : LONGINT;
  403.                                  menuId    : LONGINT;
  404.                                  stat      : LONGINT;
  405.                                END;
  406.         mpWindowSetMenuStatePtr            = POINTER TO mpWindowSetMenuState;
  407.         mpWindowSetMenuState   = RECORD
  408.                                  methodID  : LONGINT;
  409.                                  menuId    : LONGINT;
  410.                                  stat      : LONGINT;
  411.                                END;
  412.         mpWindowToBackPtr      = POINTER TO mpWindowToBack;
  413.         mpWindowToBack         = RECORD
  414.                                  methodID  : LONGINT;
  415.                                END;
  416.         mpWindowToFrontPtr     = POINTER TO mpWindowToFront;
  417.         mpWindowToFront        = RECORD
  418.                                  methodID  : LONGINT;
  419.                                END;
  420.  
  421. (*\\\*)
  422. (*/// Area
  423. *)
  424.  
  425.         mpAskMinMaxPtr         = POINTER TO mpAskMinMax;
  426.         mpAskMinMax            = RECORD
  427.                                  methodID  : LONGINT;
  428.                                  MinMaxInfo: mMinMaxPtr ;
  429.                                END; (* Custom Class *)
  430.  
  431.         mpCleanupPtr           = POINTER TO mpCleanup;
  432.         mpCleanup              = RECORD
  433.                                  methodID  : LONGINT;
  434.                                END; (* Custom Class *)
  435.  
  436.         mpContextMenuBuildPtr  = POINTER TO mpContextMenuBuild;
  437.         mpContextMenuBuild     = RECORD
  438.                                  methodID : LONGINT;
  439.                                  mx,
  440.                                  my       : LONGINT;
  441.                                END;
  442.         mpContextMenuChoicePtr = POINTER TO mpContextMenuChoice;
  443.         mpContextMenuChoice    = RECORD
  444.                                  methodID : LONGINT;
  445.                                  item     : ObjectPtr;
  446.                                END;
  447.         mpDragBeginPtr         = POINTER TO mpDragBegin;
  448.         mpDragBegin            = RECORD
  449.                                  methodID : LONGINT;
  450.                                  obj      : ObjectPtr;
  451.                                END;
  452.         mpDragDropPtr          = POINTER TO mpDragDrop;
  453.         mpDragDrop             = RECORD
  454.                                  methodID : LONGINT;
  455.                                  obj      : ObjectPtr;
  456.                                  x,
  457.                                  y        : LONGINT;
  458.                                END;
  459.         mpDragFinishPtr        = POINTER TO mpDragFinish;
  460.         mpDragFinish           = RECORD
  461.                                  methodID : LONGINT;
  462.                                  obj      : ObjectPtr;
  463.                                END;
  464.         mpDragQueryPtr         = POINTER TO mpDragQuery;
  465.         mpDragQuery            = RECORD
  466.                                  methodID : LONGINT;
  467.                                  obj      : ObjectPtr;
  468.                                END;
  469.         mpDragReportPtr        = POINTER TO mpDragReport;
  470.         mpDragReport           = RECORD
  471.                                  methodID : LONGINT;
  472.                                  obj      : ObjectPtr;
  473.                                  x,
  474.                                  y,
  475.                                  update   : LONGINT;
  476.                                END;
  477.  
  478.         mpDrawPtr              = POINTER TO mpDraw;
  479.         mpDraw                 = RECORD
  480.                                  methodID  : LONGINT;
  481.                                  flags     : MADFlagSet;
  482.                                END; (* Custom Class *)
  483.  
  484.         mpHandleInputPtr       = POINTER TO mpHandleInput;
  485.         mpHandleInput          = RECORD
  486.                                  methodID  : LONGINT;
  487.                                  imsg      : IntuiMessagePtr;
  488.                                  muikey    : LONGINT;
  489.                                END; (* Custom Class *)
  490.  
  491.         mpHidePtr              = POINTER TO mpHide;
  492.         mpHide                 = RECORD
  493.                                  methodID  : LONGINT;
  494.                                END; (* Custom Class *)
  495.  
  496.         mpSetupPtr             = POINTER TO mpSetup;
  497.         mpSetup                = RECORD
  498.                                  methodID  : LONGINT;
  499.                                  renderInfo: mRenderInfoPtr;
  500.                                END; (* Custom Class *)
  501.  
  502.         mpShowPtr              = POINTER TO mpShow;
  503.         mpShow                 = RECORD
  504.                                  methodID  : LONGINT;
  505.                                END; (* Custom Class *)
  506.  
  507. (*\\\*)
  508. (*/// "List"
  509. *)
  510.  
  511.         mpListClearPtr         = POINTER TO mpListClear;
  512.         mpListClear            = RECORD
  513.                                  methodID  : LONGINT;
  514.                                END;
  515.  
  516.         mpListCreateImagePtr   = POINTER TO mpListCreateImage ;
  517.         mpListCreateImage      = RECORD
  518.                                  methodID  : LONGINT ;
  519.                                  obj       : ObjectPtr ;
  520.                                  flags     : LONGINT ;
  521.                                END ;
  522.         mpListDeleteImagePtr   = POINTER TO mpListDeleteImage ;
  523.         mpListDeleteImage      = RECORD
  524.                                  methodID  : LONGINT ;
  525.                                  listimg   : APTR ;
  526.                                END ;
  527.         mpListExchangePtr      = POINTER TO mpListExchange;
  528.         mpListExchange         = RECORD
  529.                                  methodID  : LONGINT;
  530.                                  pos1      : LONGINT;
  531.                                  pos2      : LONGINT;
  532.                                END;
  533.         mpListGetEntryPtr      = POINTER TO mpListGetEntry;
  534.         mpListGetEntry         = RECORD
  535.                                  methodID  : LONGINT;
  536.                                  pos       : LONGINT;
  537.                                  entry     : POINTER TO APTR;
  538.                                END;
  539.         mpListInsertPtr        = POINTER TO mpListInsert;
  540.         mpListInsert           = RECORD
  541.                                  methodID  : LONGINT;
  542.                                  entries   : POINTER TO APTR;
  543.                                  count     : LONGINT;
  544.                                  pos       : LONGINT;
  545.                                END;
  546.         mpListInsertSinglePtr  = POINTER TO mpListInsertSingle;
  547.         mpListInsertSingle     = RECORD
  548.                                  methodID  : LONGINT;
  549.                                  entry     : APTR;
  550.                                  pos       : LONGINT;
  551.                                END;
  552.         mpListJumpPtr          = POINTER TO mpListJump;
  553.         mpListJump             = RECORD
  554.                                  methodID  : LONGINT;
  555.                                  pos       : LONGINT;
  556.                                END;
  557.         mpListMovePtr          = POINTER TO mpListMove;
  558.         mpListMove             = RECORD
  559.                                  methodID  : LONGINT;
  560.                                  from      : LONGINT;
  561.                                  to        : LONGINT;
  562.                                END;
  563.         mpListNextSelectedPtr  = POINTER TO mpListNextSelected;
  564.         mpListNextSelected     = RECORD
  565.                                  methodID  : LONGINT;
  566.                                  pos       : APTR;
  567.                                END;
  568.         mpListRedrawPtr        = POINTER TO mpListRedraw;
  569.         mpListRedraw           = RECORD
  570.                                  methodID  : LONGINT;
  571.                                  pos       : LONGINT;
  572.                                END;
  573.         mpListRemovePtr        = POINTER TO mpListRemove;
  574.         mpListRemove           = RECORD
  575.                                  methodID  : LONGINT;
  576.                                  pos       : LONGINT;
  577.                                END;
  578.         mpListSelectPtr        = POINTER TO mpListSelect;
  579.         mpListSelect           = RECORD
  580.                                  methodID  : LONGINT;
  581.                                  pos       : LONGINT;
  582.                                  seltype   : LONGINT;
  583.                                  state     : APTR;
  584.                                END;
  585.         mpListSortPtr          = POINTER TO mpListSort;
  586.         mpListSort             = RECORD
  587.                                  methodID  : LONGINT;
  588.                                END;
  589.  
  590.         mpListTestPosPtr       = POINTER TO mpListTestPos;
  591.         mpListTestPos          = RECORD
  592.                                  methodID : LONGINT;
  593.                                  x,
  594.                                  y        : LONGINT;
  595.                                  res      : mListTestPosResultPtr ;
  596.                                END;
  597.  
  598. (*\\\*)
  599. (*/// "Dirlist"
  600. *)
  601.  
  602.         mpDirlistReReadPtr     = POINTER TO mpDirlistReRead;
  603.         mpDirlistReRead        = RECORD
  604.                                  methodID  : LONGINT;
  605.                                END;
  606.  
  607. (*\\\*)
  608. (*/// "Numeric"
  609. *)
  610.  
  611.         mpNumericDecreasePtr   = POINTER TO mpNumericDecrease;
  612.         mpNumericDecrease      = RECORD
  613.                                  methodID  : LONGINT;
  614.                                  amount    : LONGINT;
  615.                                END;
  616.         mpNumericIncreasePtr   = POINTER TO mpNumericIncrease;
  617.         mpNumericIncrease      = RECORD
  618.                                  methodID  : LONGINT;
  619.                                  amount    : LONGINT;
  620.                                END;
  621.         mpNumericScaleToValuePtr           = POINTER TO mpNumericScaleToValue;
  622.         mpNumericScaleToValue  = RECORD
  623.                                  methodID  : LONGINT;
  624.                                  scalemin  : LONGINT;
  625.                                  scalemax  : LONGINT;
  626.                                  scale     : LONGINT;
  627.                                END;
  628.         mpNumericSetDefaultPtr = POINTER TO mpNumericSetDefault;
  629.         mpNumericSetDefault    = RECORD
  630.                                  methodID  : LONGINT;
  631.                                END;
  632.         mpNumericStringifyPtr  = POINTER TO mpNumericStringify;
  633.         mpNumericStringify     = RECORD
  634.                                  methodID  : LONGINT;
  635.                                  value     : LONGINT;
  636.                                END;
  637.         mpNumericValueToScalePtr           = POINTER TO mpNumericValueToScale;
  638.         mpNumericValueToScale  = RECORD
  639.                                  methodID  : LONGINT;
  640.                                  scalemin  : LONGINT;
  641.                                  scalemax  : LONGINT;
  642.                                END;
  643.  
  644. (*\\\*)
  645. (*/// "Group"
  646. *)
  647.  
  648.         mpGroupExitChangePtr   = POINTER TO mpGroupExitChange;
  649.         mpGroupExitChange      = RECORD
  650.                                  methodID  : LONGINT;
  651.                                END;
  652.         mpGroupInitChangePtr   = POINTER TO mpGroupInitChange;
  653.         mpGroupInitChange      = RECORD
  654.                                  methodID  : LONGINT;
  655.                                END;
  656.  
  657. (*\\\*)
  658. (*/// "Popstring"
  659. *)
  660.  
  661.         mpPopstringClosePtr    = POINTER TO mpPopstringClose;
  662.         mpPopstringClose       = RECORD
  663.                                  methodID  : LONGINT;
  664.                                  result    : LONGINT;
  665.                                END;
  666.         mpPopstringOpenPtr     = POINTER TO mpPopstringOpen;
  667.         mpPopstringOpen        = RECORD
  668.                                  methodID  : LONGINT;
  669.                                END;
  670.  
  671. (*\\\*)
  672. (*/// "Semaphore"
  673. *)
  674.  
  675.         mpSemaphoreAttemptPtr              = POINTER TO mpSemaphoreAttempt;
  676.         mpSemaphoreAttempt                 = RECORD
  677.                                              methodID  : LONGINT;
  678.                                            END;
  679.         mpSemaphoreAttemptSharedPtr        = POINTER TO mpSemaphoreAttemptShared;
  680.         mpSemaphoreAttemptShared           = RECORD
  681.                                              methodID: LONGINT;
  682.                                            END;
  683.         mpSemaphoreObtainPtr               = POINTER TO mpSemaphoreObtain;
  684.         mpSemaphoreObtain                  = RECORD
  685.                                              methodID  : LONGINT;
  686.                                            END;
  687.         mpSemaphoreObtainSharedPtr         = POINTER TO mpSemaphoreObtainShared;
  688.         mpSemaphoreObtainShared            = RECORD
  689.                                              methodID : LONGINT;
  690.                                            END;
  691.         mpSemaphoreReleasePtr              = POINTER TO mpSemaphoreRelease;
  692.         mpSemaphoreRelease                 = RECORD
  693.                                              methodID  : LONGINT;
  694.                                            END;
  695.  
  696. (*\\\*)
  697. (*/// "Dataspace"
  698. *)
  699.  
  700.         mpDataspaceAddPtr      = POINTER TO mpDataspaceAdd;
  701.         mpDataspaceAdd         = RECORD
  702.                                  methodID  : LONGINT;
  703.                                  data      : APTR;
  704.                                  len       : LONGINT;
  705.                                  dsId      : LONGINT;
  706.                                END;
  707.         mpDataspaceClearPtr    = POINTER TO mpDataspaceClear;
  708.         mpDataspaceClear       = RECORD
  709.                                  methodID  : LONGINT;
  710.                                END;
  711.         mpDataspaceMergePtr    = POINTER TO mpDataspaceMerge;
  712.         mpDataspaceMerge       = RECORD
  713.                                  methodID  : LONGINT;
  714.                                  dataspace : ObjectPtr ;
  715.                                END;
  716.         mpDataspaceReadIFFPtr  = POINTER TO mpDataspaceReadIFF;
  717.         mpDataspaceReadIFF     = RECORD
  718.                                  methodID  : LONGINT;
  719.                                  handle    : IFFHandlePtr;
  720.                                END;
  721.         mpDataspaceRemovePtr   = POINTER TO mpDataspaceRemove;
  722.         mpDataspaceRemove      = RECORD
  723.                                  methodID  : LONGINT;
  724.                                  dsId      : LONGINT;
  725.                                END;
  726.         mpDataspaceWriteIFFPtr = POINTER TO mpDataspaceWriteIFF;
  727.         mpDataspaceWriteIFF    = RECORD
  728.                                  methodID  : LONGINT;
  729.                                  handle    : IFFHandlePtr;
  730.                                  type      : LONGINT;
  731.                                  dsId      : LONGINT;
  732.                                END;
  733.  
  734. (*\\\*)
  735.  
  736. (* (partial) instance data of notify class *)
  737.  
  738. TYPE mNotifyData = RECORD
  739.         mndGlobalInfo       : mGlobalInfoPtr;
  740.         mndUserData         : LONGINT;
  741.         priv1               : LONGINT;
  742.         priv2               : LONGINT;
  743.         priv3               : LONGINT;
  744.         priv4               : LONGINT;
  745.         priv5               : LONGINT;
  746.     END;
  747.  
  748.  
  749. (* mMinMax structure holds information about minimum, maximum
  750.    and default dimensions of an object. *)
  751.  
  752.      mMinMax = RECORD
  753.                 MinWidth   : CARDINAL;
  754.                 MinHeight  : CARDINAL;
  755.                 MaxWidth   : CARDINAL;
  756.                 MaxHeight  : CARDINAL;
  757.                 DefWidth   : CARDINAL;
  758.                 DefHeight  : CARDINAL;
  759.         END;
  760.  
  761. CONST mMAXMAX = 10000; (* use this if a dimension is not limited. *)
  762.  
  763.  
  764. (* Hook message for custom layout *)
  765.  
  766. TYPE
  767.      mLayoutPtr = POINTER TO mLayout;
  768.      mLayout = RECORD
  769.                  Width  : LONGINT;
  770.                  Height : LONGINT;
  771.                END;
  772.  
  773.      mLayoutMsgPtr = POINTER TO mLayoutMsg;
  774.      mLayoutMsg = RECORD
  775.                     lmType     : LONGINT;           (* type of message (see defines below)                      *)
  776.                     lmChildren : MinListPtr;        (* list of this groups children, traverse with NextObject() *)
  777.                     lmMinMax   : mMinMax;           (* results for MUILM_MINMAX                                 *)
  778.                     lmLayout   : mLayout;           (* size (and result) for MUILM_LAYOUT                       *)
  779.                   END ;
  780.  
  781. CONST mlmMINMAX  =  1 ;    (* MUI wants you to calc your min & max sizes *)
  782. CONST mlmLAYOUT  =  2 ;    (* MUI wants you to layout your children      *)
  783. CONST mlmUNKNOWN = -1 ;    (* return this if your hook doesn't implement lm_Type *)
  784.  
  785. (* (partial) instance data of area class *)
  786.  
  787. TYPE mAreaData = RECORD
  788.                 madRenderInfo       : mRenderInfoPtr;       (* RenderInfo for this object *)
  789.                 priv6               : LONGINT;
  790.                 madFont             : TextFontPtr;          (* Font *)
  791.                 madMinMax           : mMinMax;              (* min/max/default sizes *)
  792.                 madBox              : IBox;                 (* position and dimension *)
  793.  
  794.                 madAddLeft          : SHORTCARD;            (* frame & innerspacing left offset *)
  795.                 madAddTop           : SHORTCARD;            (* frame & innerspacing top offset *)
  796.                 madSubWidth         : SHORTCARD;            (* frame & innerspacing add. width *)
  797.                 madSubHeight        : SHORTCARD;            (* frame & innerspacing add. height *)
  798.  
  799.                 madFlags            : MADFlagSet;           (* see definitions above *)
  800.  
  801.                 (* ... private data follows ... *)
  802.         END;
  803.  
  804.  
  805.  
  806. (* Global information about configuration and parent application. *)
  807.  
  808. TYPE mGlobalInfo = RECORD
  809.                         mgiConfiguration            : mConfigurationPtr;
  810.                         mgiApplicationObject        : ObjectPtr;
  811.                         (* ... private data follows ... *)
  812.                      END;
  813.  
  814. (* MUI's draw pens *)
  815.  
  816. CONST mpenShine      = 0 ;
  817. CONST mpenHalfshine  = 1 ;
  818. CONST mpenBackground = 2 ;
  819. CONST mpenHalfshadow = 3 ;
  820. CONST mpenShadow     = 4 ;
  821. CONST mpenText       = 5 ;
  822. CONST mpenFill       = 6 ;
  823. CONST mpenCount      = 7 ;
  824.  
  825. (* Mask for pens from MUIG_ObtainPen() *)
  826.  
  827. CONST muipenMask = 0000FFFFH ;
  828.  
  829. PROCEDURE muiPen(pen : LONGCARD) : LONGCARD;
  830.  
  831. (* Information on display environment *)
  832.  
  833. TYPE mRenderInfo = RECORD
  834.                             mriWindowObject        : ObjectPtr;     (* valid between MUIMSetup/MUIMCleanup *)
  835.  
  836.                             mriScreen              : ScreenPtr;     (* valid between MUIMSetup/MUIMCleanup *)
  837.                             mriDrawInfo            : DrawInfoPtr;   (* valid between MUIMSetup/MUIMCleanup *)
  838.                             mriPens                : WORDPtr;       (* valid between MUIMSetup/MUIMCleanup *)
  839.                             mriWindow              : WindowPtr;     (* valid between MUIMShow/MUIMHide *)
  840.                             mriRastPort            : RastPortPtr;   (* valid between MUIMShow/MUIMHide *)
  841.  
  842.                             mriFlags               : LONGINT;       (* valid between MUIM_Setup/MUIM_Cleanup *)
  843.  
  844.                         (* ... private data follows ... *)
  845.                      END;
  846.  
  847. TYPE  MRIFlags = (
  848.                   (*
  849.                   ** If mri_Flags & MUIMRI_RECTFILL, RectFill() is quicker
  850.                   ** than Move()/Draw() for horizontal or vertical lines.
  851.                   ** on the current display.
  852.                   *)
  853.  
  854.                   rectFill,
  855.  
  856.                   (*
  857.                   ** If mri_Flags & MUIMRI_TRUECOLOR, display environment is a
  858.                   ** cybergraphics emulated hicolor or true color display with
  859.                   ** an unlimited number of pens available. Obtain/ReleasePen()s
  860.                   ** as many as you want... :-)
  861.                   *)
  862.  
  863.                   trueColor,
  864.  
  865.                   (*
  866.                   ** If mri_Flags & MUIMRI_THINFRAMES, MUI uses thin frames
  867.                   ** (1:1) apsect ratio instead of standard 2:1 frames.
  868.                   *)
  869.  
  870.                   thinFrames,
  871.  
  872.                   (*
  873.                   ** If mri_Flags & MUIMRI_REFRESHMODE, MUI is currently
  874.                   ** refreshing a WFLG_SIMPLEREFRESH window and is between
  875.                   ** a BeginRefresh()/EndRefresh() pair.
  876.                   *)
  877.  
  878.                   refreshMode,
  879.  
  880.                               mp4,  mp5,  mp6,  mp7,  mp8,  mp9,  mp10, mp11,
  881.                   mp12, mp13, mp14, mp15, mp16, mp17, mp18, mp19, mp20, mp21,
  882.                   mp22, mp23, mp24, mp25, mp26, mp27, mp28, mp29, mp30, mp31
  883.                   (* rest is private, but must be specified to get a LONGSET *)
  884.                  );
  885.  
  886.       MRIFlagSet = SET OF MRIFlags;
  887.     
  888.  
  889. (*
  890. ** some procedures to get some information about our object 
  891. *)
  892.  
  893. PROCEDURE muiNotifyData(obj : APTR) : mNotifyDataPtr;
  894. PROCEDURE muiAreaData(obj : APTR) : mAreaDataPtr;
  895. PROCEDURE muiGlobalInfo(obj : APTR) : mGlobalInfoPtr;
  896. PROCEDURE muiUserData(obj : APTR) : ADDRESS ;
  897. PROCEDURE muiRenderInfo(obj : APTR) : mRenderInfoPtr;
  898.  
  899. (*
  900. ** some more specialized functions to retain information about special
  901. ** object-data like rastport, window, etc.
  902. **
  903. ** NOTE: These macros may only be used in custom classes and are
  904. ** only valid if your class is inbetween the specified methods!
  905. *)
  906.  
  907. PROCEDURE OBJ_app(obj : APTR) : ObjectPtr;          (* valid between MUIM_Setup/Cleanup *)
  908. PROCEDURE OBJ_win(obj : APTR) : ObjectPtr;          (* valid between MUIM_Setup/Cleanup *)
  909. PROCEDURE OBJ_dri(obj : APTR) : DrawInfoPtr;        (* valid between MUIM_Setup/Cleanup *)
  910. PROCEDURE OBJ_screen(obj : APTR) : ScreenPtr;       (* valid between MUIM_Setup/Cleanup *)
  911. PROCEDURE OBJ_pens(obj : APTR) : WORDPtr ;          (* valid between MUIM_Setup/Cleanup *)
  912. PROCEDURE OBJ_window(obj : APTR) : WindowPtr;       (* valid between MUIM_Show/Hide *)
  913. PROCEDURE OBJ_rp(obj : APTR) : RastPortPtr;         (* valid between MUIM_Show/Hide *)
  914. PROCEDURE OBJ_left(obj : APTR) : INTEGER;           (* valid during MUIM_Draw *)
  915. PROCEDURE OBJ_top(obj : APTR) : INTEGER;            (* valid during MUIM_Draw *)
  916. PROCEDURE OBJ_width(obj : APTR) : INTEGER;          (* valid during MUIM_Draw *)
  917. PROCEDURE OBJ_height(obj : APTR) : INTEGER;         (* valid during MUIM_Draw *)
  918. PROCEDURE OBJ_right(obj : APTR) : INTEGER;          (* valid during MUIM_Draw *)
  919. PROCEDURE OBJ_bottom(obj : APTR) : INTEGER;         (* valid during MUIM_Draw *)
  920. PROCEDURE OBJ_addleft(obj : APTR) : INTEGER;        (* valid during MUIM_Draw *)
  921. PROCEDURE OBJ_addtop(obj : APTR) : INTEGER;         (* valid during MUIM_Draw *)
  922. PROCEDURE OBJ_subwidth(obj : APTR) : INTEGER;       (* valid during MUIM_Draw *)
  923. PROCEDURE OBJ_subheight(obj : APTR) : INTEGER;      (* valid during MUIM_Draw *)
  924. PROCEDURE OBJ_mleft(obj : APTR) : INTEGER;          (* valid during MUIM_Draw *)
  925. PROCEDURE OBJ_mtop(obj : APTR) : INTEGER;           (* valid during MUIM_Draw *)
  926. PROCEDURE OBJ_mwidth(obj : APTR) : INTEGER;         (* valid during MUIM_Draw *)
  927. PROCEDURE OBJ_mheight(obj : APTR) : INTEGER;        (* valid during MUIM_Draw *)
  928. PROCEDURE OBJ_mright(obj : APTR) : INTEGER;         (* valid during MUIM_Draw *)
  929. PROCEDURE OBJ_mbottom(obj : APTR) : INTEGER;        (* valid during MUIM_Draw *)
  930. PROCEDURE OBJ_font(obj : APTR) : TextFontPtr;       (* valid between MUIM_Setup/Cleanup *)
  931. PROCEDURE OBJ_minwidth(obj : APTR) : CARDINAL;      (* valid between MUIM_Show/Hide *)
  932. PROCEDURE OBJ_minheight(obj : APTR) : CARDINAL;     (* valid between MUIM_Show/Hide *)
  933. PROCEDURE OBJ_maxwidth(obj : APTR) : CARDINAL;      (* valid between MUIM_Show/Hide *)
  934. PROCEDURE OBJ_maxheight(obj : APTR) : CARDINAL;     (* valid between MUIM_Show/Hide *)
  935. PROCEDURE OBJ_defwidth(obj : APTR) : CARDINAL;      (* valid between MUIM_Show/Hide *)
  936. PROCEDURE OBJ_defheight(obj : APTR) : CARDINAL;     (* valid between MUIM_Show/Hide *)
  937. PROCEDURE OBJ_flags(obj : APTR) : MADFlagSet;
  938.  
  939.    
  940. (* User configurable keyboard events coming with MUIMHandleInput *)
  941.  
  942. CONST MUIKEYRELEASE     = -2; (* not a real key, faked when MUIKEYPRESS is released *)
  943. CONST MUIKEYNONE        = -1;
  944. CONST MUIKEYPRESS       =  0;
  945. CONST MUIKEYTOGGLE      =  1;
  946. CONST MUIKEYUP          =  2;
  947. CONST MUIKEYDOWN        =  3;
  948. CONST MUIKEYPAGEUP      =  4;
  949. CONST MUIKEYPAGEDOWN    =  5;
  950. CONST MUIKEYTOP         =  6;
  951. CONST MUIKEYBOTTOM      =  7;
  952. CONST MUIKEYLEFT        =  8;
  953. CONST MUIKEYRIGHT       =  9;
  954. CONST MUIKEYWORDLEFT    = 10;
  955. CONST MUIKEYWORDRIGHT   = 11;
  956. CONST MUIKEYLINESTART   = 12;
  957. CONST MUIKEYLINEEND     = 13;
  958. CONST MUIKEYGADGETNEXT  = 14;
  959. CONST MUIKEYGADGETPREV  = 15;
  960. CONST MUIKEYGADGETOFF   = 16;
  961. CONST MUIKEYWINDOWCLOSE = 17;
  962. CONST MUIKEYWINDOWNEXT  = 18;
  963. CONST MUIKEYWINDOWPREV  = 19;
  964. CONST MUIKEYHELP        = 20;
  965. CONST MUIKEYPOPUP       = 21;
  966. CONST MUIKEYCOUNT       = 22; (* private *)
  967.  
  968. (*
  969. ** now something about dispatchers.
  970. ** if you have written your dispatcher make sure it has the format of
  971. ** PROCEDURE Dispatcher(cl : IClassPtr; obj : ADDRESS; msg : ADDRESS) : ADDRESS
  972. ** (like DispatcherDef)
  973. ** Then call in your main routine the procedure MakeDispatcher like this :
  974. ** MakeDispatcher(Dispatcher, MyClass),
  975. ** where MyClass is the initialized IClassPtr of your new class.
  976. ** This function will then set up your dispatcher with a little stub which
  977. ** will restore A4 for your (will mean, your programm will be pure, if you
  978. ** do all right)
  979. *)
  980.  
  981. (* here the definition of a dispatcher! *)
  982.  
  983. TYPE    DispatcherDef = PROCEDURE ( (*class*)   IClassPtr,
  984.                                     (*object*)  ADDRESS,
  985.                                     (*message*) ADDRESS) : ADDRESS;
  986.  
  987. (* this is the template for moCreateCustomClass() ! *)
  988.  
  989. TYPE    ClassDispatcher = PROCEDURE ( (*class*) IClassPtr{R.A0},
  990.                                     (*object*)  ADDRESS{R.A2},
  991.                                     (*message*) ADDRESS{R.A1}) : ADDRESS;
  992.  
  993.  
  994. (* now the procedure MakeDispatcher : *)
  995.  
  996. PROCEDURE MakeDispatcher(entry:DispatcherDef; VAR myclass : IClassPtr);
  997.  
  998.  
  999.  
  1000. (* 
  1001. ** at last a little procedure to fill in the values in the MinMax-Record.
  1002. ** You can call it inside an AskMinMax-Method, because it is ever the same...
  1003. *)
  1004.  
  1005. PROCEDURE FillMinMaxInfo (msg : mpAskMinMaxPtr; MinWidth   : CARDINAL;
  1006.                                                 DefWidth   : CARDINAL;
  1007.                                                 MaxWidth   : CARDINAL;
  1008.                                                 MinHeight  : CARDINAL;
  1009.                                                 DefHeight  : CARDINAL;
  1010.                                                 MaxHeight  : CARDINAL);
  1011.  
  1012.  
  1013. (*
  1014. ** 2 useful procedures for testing if some coordinates are inside your object
  1015. ** (converted from the ones in class3.c. So look there how to use... )
  1016. *)
  1017.  
  1018. (* this will test if x is between a and b *)
  1019.  
  1020. PROCEDURE OBJ_between(a,x,b : INTEGER) : BOOLEAN;
  1021.  
  1022. (* this will test, if the position (x, y) is inside the Object obj *)
  1023.  
  1024. PROCEDURE OBJ_isInObject(x, y : INTEGER; obj : ObjectPtr) : BOOLEAN;
  1025.  
  1026.  
  1027.  
  1028. (* MUI_CustomClass returned by MUI_CreateCustomClass() *)                                    
  1029.  
  1030. TYPE
  1031.     mCustomClass = RECORD
  1032.                     userData            : APTR;         (* use for whatever you want *)
  1033.                     utilityBase         : LibraryPtr;   (* MUI has opened these libraries *)
  1034.                     dosBase             : LibraryPtr;   (* for you automatically. You can *)
  1035.                     gfxBase             : LibraryPtr;   (* use them or decide to open     *)
  1036.                     intuitionBase       : LibraryPtr;   (* your libraries yourself.       *)
  1037.                                                                                              
  1038.                     super               : IClassPtr;    (* pointer to super class   *)
  1039.                     class               : IClassPtr;    (* pointer to the new class *)
  1040.  
  1041.                     (* ... private data follows ... *)
  1042.  
  1043.                   END;
  1044.                                                                                              
  1045.  
  1046. END MuiClasses.
  1047.